package com.atguigu.schedule.pojo;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.AllArgsConstructor;
import lombok.Builder;

import java.time.LocalDateTime;

/**
 * SLAM建图数据实体
 * 存储建图过程中的关键帧、地图点等信息
 */
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class SlamMap {
    
    private Long id;
    
    /**
     * 地图名称
     */
    private String mapName;
    
    /**
     * 地图描述
     */
    private String description;
    
    /**
     * 建图状态：BUILDING, COMPLETED, FAILED
     */
    private MapStatus status;
    
    /**
     * 关键帧数量
     */
    private Integer keyframeCount;
    
    /**
     * 地图点数量
     */
    private Integer mappointCount;
    
    /**
     * 轨迹数据（JSON格式存储）
     */
    private String trajectoryData;
    
    /**
     * 地图数据文件路径
     */
    private String mapFilePath;
    
    /**
     * 创建时间
     */
    private LocalDateTime createdAt;
    
    /**
     * 更新时间
*/
    private LocalDateTime updatedAt;
    
    /**
     * 建图开始时间
     */
    private LocalDateTime buildStartTime;
    
    /**
     * 建图结束时间
     */
    private LocalDateTime buildEndTime;
    
    /**
     * 建图参数（JSON格式）
     */
    private String buildParameters;
    
    /**
     * 地图状态枚举
     */
    public enum MapStatus {
        BUILDING,    // 建图中
        COMPLETED,   // 建图完成
        FAILED,      // 建图失败
        PAUSED       // 建图暂停
    }

    protected void onCreate() {
        createdAt = LocalDateTime.now();
        updatedAt = LocalDateTime.now();
    }
    
    protected void onUpdate() {
        updatedAt = LocalDateTime.now();
    }
}
